generator function
generatorを作成するための関数
呼び出すと、generatorが返ってくる
呼び出し側に値を返すのに、return文ではなくyield式を使う
通常の関数では、その定義の本体に書いたコードは関数末尾に到達するか、どこかでreturn文に到達するまで実行が続けられる
ジェネレータ関数の本体に書いたコードは、そのgeneratorの__next__()が呼び出されることで実行される
その実行はyield式に到達するまで続けられ、yield式が実行されると、それに渡された値が呼び出し側に戻され、そこでコードの実行が一時停止される
ローカル変数の値、実行位置などが保存される
再び__next__()が呼び出されると、次の行から実行が再開されて、再びyield式に到達するまで実行が続けられる
最終的にyield式に到達しないままコードの実行が終了したところで、StopIteration例外が発生する
[Python入門]ジェネレータ関数とジェネレータイテレータの基礎:Python入門(1/2 ページ) - @IT
#Python Python.icon